package com.ytt.core.service.mapper.authority;

import com.ytt.core.model.authority.AuthorityDto;
import com.ytt.core.service.entity.authority.Authority;
import org.mapstruct.IterableMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.ReportingPolicy;

import java.util.List;
import java.util.Set;

/**
 * AuthorityMapper
 *
 * @author chenwen
 * @date 2019/9/16 17:01
 */
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)

public interface AuthorityMapper {
    /**
     * 将Authority转换为AuthorityDTO
     * 如果有不同名的情况，需要使用@Mappings和@Mapping来定义
     *
     * @param authority 实体Authority
     * @return 转换后的DTO
     */
    AuthorityDto toDTO(Authority authority);

    /**
     * 将Authority转换为AuthorityBaseDTO
     * 如果有不同名的情况，需要使用@Mappings和@Mapping来定义
     *
     * @param authority 实体Authority
     * @return 转换后的DTO
     */
    AuthorityDto toBaseDTO(Authority authority);

    /**
     * 将DTO转换为实体类
     *
     * @param authorityEditInfoDTO DTO数据
     * @return 转换后的实体类
     */
    Authority toEntity(AuthorityDto authorityEditInfoDTO);

    /**
     * 使用DTO更新Entity
     *
     * @param dto    DTO数据
     * @param entity 要更新的实体
     */
    void updateEntity(AuthorityDto dto, @MappingTarget Authority entity);
}
